The development of complex computer programs or software systems for controlling operations of computers and telecommunication systems requires a large work effort. Computer programmers (software developers) expend a great deal of effort in designing, coding and testing complex software systems. The process of designing, writing and coding, called a software development cycle, often requires several years for a complex system. Over the years software developers have learned that the development cycle is shortened if a smaller fraction of the cycle is spent testing software and a larger fraction is spent in designing requirements for software and in designing and coding software.
In spite of advances in software technology, the development of increasingly complex computer software and software-driven systems remains difficult. This difficulty has increased the importance of an efficient, low error-rate software design process. Design of specifications is an important first step to facilitate the development of software. Specifications contain requirements that software systems must meet, and specify how the systems must operate. These specifications, like the software systems they describe, have become increasingly difficult to generate. One reason for this is the detailed knowledge of the software environment that is required to generate the specification.
Software simulators are used by software developers to ease the difficulty of developing and testing specifications by modeling the operation of software systems. Based on input about a system, simulators generate a program that models the operation of the system. Although simulators aid in the development of specifications, they present several problems. First, simulators are not based on a simple, familiar model; programming knowledge of at least the simulator "language" is required to generate an adequate model of a system. Not only must a developer be concerned with how a simulated system should operate, but, additionally, he/she must devote a significant amount of thought to developing the simulation program. Thus, complexity is added to the software specification process.
Next, simulators represent independent parts of a system as separate entities, requiring specific inputs and producing specific outputs. This is a problem because these entities cannot interact with each other (be "connected") unless the inputs and outputs correspond, and often they do not. Thus, a developer using a simulator cannot always see a total integration of system parts.
Finally, if, during a simulation, a developer discovers an error or wants to change some part of the operation of a system, the developer must stop the simulation, make the desired change, recompile the program to be simulated, and then start the simulation from the beginning. Thus, a developer cannot immediately view the results of a change, and this process of making a change is slow, resulting in an inefficient use of developer time.
A problem of the prior art, therefore, is that there is not an efficient arrangement for specifying software that does not require extensive programming knowledge by a user.